Testing the performance of a digital device, such as, for example, a microprocessor, typically requires providing the device with input and then checking the device's output to determine if it is correct. The device under test (DUT) may be provided with a sequence of waveforms, each of which represents a certain number of state characters.
A testing device that provides multi-character waveforms to a DUT may include a waveform table having a number of waveform entries. Each waveform entry describes a waveform that may be provided to or received from the DUT. The testing device may also include a memory device (known as vector memory) for storing vectors corresponding to DUT input and/or predicted DUT output.
Using multi-character waveforms to provide input to a DUT or to test the output of the DUT enables the vector memory requirement to be reduced by a factor of N (where N is the number of characters represented by each waveform). For example, consider a stream of state characters HHLL where each character corresponds to a waveform entry in a waveform table. These state characters will occupy four memory locations in the vector memory (one memory location per character). However, if a multi-character waveform entry corresponding to the characters HHLL is stored in the waveform table, then the entire stream of state characters HHLL can be stored in a single vector memory location in the waveform table, thereby reducing memory requirements.
Using vectors comprising N state characters can also virtually increase the speed of the tester by a factor of N. For example, consider a tester having a minimum base period of 4 ns (250 MHz), where one vector is delivered per tester cycle. If each vector were to only contain one state character and were to reference a waveform representing a single data event, then the maximum event delivery speed (to a DUT) is 250 MHz. However, if each vector were to contain four state characters and were to reference a waveform representing four data events, then the maximum event delivery speed becomes 1 GHz.
One problem encountered in using multi-character vectors is that the number of possible waveform entries may exceed the storage capacity of the waveform table. For example, a file comprising DUT input and projected DUT output may include five distinct input/output timeplates, each of which has five distinct values (e.g., H, L, X, 1, or 0). In such an example, if each waveform represents three state characters, then there would be over 30 billion possible waveform entries that can represent any combination of three state characters in such file ( ( 5 timeplates) ^ 5 states ) ^ 3 state characters)). In order to successfully use the testing device, only a small number (e.g., 32 or less) of the possible waveform entries may be specified in the waveform table. Therefore, to operate within a tester's limits, a user has had to eliminate combinations of characters that are unlikely to be encountered in test data. This process of elimination can be very difficult and time consuming, especially when timing information for the test data is developed separately from the corresponding vector information.
One possible approach for dealing with this problem is to adopt standard masking templates. These templates force data combinations to fit within tester resources, often by ignoring valid DUT output. While this approach requires less user effort, it also destroys the integrity of the DUT testing.
Another possible approach for solving this problem is to provide a testing device with much larger memory capacity that can accommodate a waveform table having many more waveform entries. However, this is not a cost effective solution since the high speed memory required for many testing devices is relatively expensive. Therefore, there exists a need for systems and methods for addressing this and/or other problems associated with testing digital devices.